package com.sc.nft.vo.wxPay;

import lombok.Data;

/**
 * @Author：LiGen
 * @Package：com.sc.nft.vo.wxPay
 * @Project：sc_metago
 * @name：TransferBatchGet
 * @Date：2024/5/16 20:06
 * @Filename：TransferBatchGet
 */
@Data
public class TransferBatchGet {

    /**
     * 商户号 说明：微信支付分配的商户号
     */
    private String mchid;

    /**
     * 商家批次单号 说明：商户系统内部的商家批次单号，在商户系统内部唯一
     */
    private String outBatchNo;

    /**
     * 微信批次单号 说明：微信批次单号，微信商家转账系统返回的唯一标识
     */
    private String batchId;

    /**
     * 商户appid 说明：申请商户号的appid或商户号绑定的appid（企业号corpid即为此appid）
     */
    private String appid;

    /**
     * 批次状态 说明：WAIT_PAY: 待付款确认。需要付款出资商户在商家助手小程序或服务商助手小程序进行付款确认
     * ACCEPTED:已受理。批次已受理成功，若发起批量转账的30分钟后，转账批次单仍处于该状态，可能原因是商户账户余额不足等。商户可查询账户资金流水，若该笔转账批次单的扣款已经发生，则表示批次已经进入转账中，请再次查单确认
     * PROCESSING:转账中。已开始处理批次内的转账明细单 FINISHED:已完成。批次内的所有转账明细单都已处理完成 CLOSED:已关闭。可查询具体的批次关闭原因确认
     */
    private String batchStatus;

    /**
     * 批次类型 说明：API:API方式发起 WEB:页面方式发起
     */
    private String batchType;

    /**
     * 批次名称 说明：该笔批量转账的名称
     */
    private String batchName;

    /**
     * 批次备注 说明：转账说明，UTF8编码，最多允许32个字符
     */
    private String batchRemark;

    /**
     * 批次关闭原因 说明：如果批次单状态为“CLOSED”（已关闭），则有关闭原因
     */
    private CloseReasonType closeReason;

    /**
     * 转账总金额 说明：转账金额单位为“分”
     */
    private Long totalAmount;

    /**
     * 转账总笔数 说明：一个转账批次单最多发起三千笔转账
     */
    private Integer totalNum;

    /**
     * 批次创建时间 说明：批次受理成功时返回，按照使用rfc3339所定义的格式，格式为YYYY-MM-DDThh:mm:ss+TIMEZONE
     */
    private String createTime;

    /**
     * 批次更新时间 说明：批次最近一次状态变更的时间，按照使用rfc3339所定义的格式，格式为YYYY-MM-DDThh:mm:ss+TIMEZONE
     */
    private String updateTime;

    /**
     * 转账成功金额 说明：转账成功的金额，单位为“分”。当批次状态为“PROCESSING”（转账中）时，转账成功金额随时可能变化
     */
    private Long successAmount;

    /**
     * 转账成功笔数 说明：转账成功的笔数。当批次状态为“PROCESSING”（转账中）时，转账成功笔数随时可能变化
     */
    private Integer successNum;

    /**
     * 转账失败金额 说明：转账失败的金额，单位为“分”
     */
    private Long failAmount;

    /**
     * 转账失败笔数 说明：转账失败的笔数
     */
    private Integer failNum;

    /**
     * 转账场景ID 说明：指定的转账场景ID
     */
    private String transferSceneId;

    /** CloseReasonType */
    public enum CloseReasonType {
        /**
         * 系统超时关闭，可能原因账户余额不足或其他错误
         */
        OVERDUE_CLOSE,

        /**
         * 付款确认时，转账场景已不可用，系统做关单处理
         */
        TRANSFER_SCENE_INVALID
    }
}
